/*
 * Copyright 2020 eBlocker Open Source UG (haftungsbeschraenkt)
 *
 * Licensed under the EUPL, Version 1.2 or - as soon they will be
 * approved by the European Commission - subsequent versions of the EUPL
 * (the "License"); You may not use this work except in compliance with
 * the License. You may obtain a copy of the License at:
 *
 *   https://joinup.ec.europa.eu/page/eupl-text-11-12
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
export default  function ControlbarController( $scope, $state, $stateParams, $mdDialog,
                       logger, security, APP_CONTEXT, PageContextService, ControlbarService) {
    'ngInject';
    'use strict';

    const vm = this;

    vm.isLoading = true;

    vm.handleBackgroundClick = handleBackgroundClick;
    vm.close = close;

    PageContextService.setPageContext($stateParams.pageContextId);

    function close(icon) {
        ControlbarService.closeControlbar(icon);
    }

    function handleBackgroundClick() {
        if (ControlbarService.isDropdownOpen()) {
            // open dropdown should be closed first. Next click will close controlbar.
            ControlbarService.isDropdownOpen(false);
            return;
        }
        ControlbarService.closeControlbar();
    }

    $scope.$on('IdleStart', function() {
        logger.info('IdleStart');
    });

    $scope.$on('IdleTimeout', function() {
        logger.info('IdleTimeout');
        ControlbarService.closeControlbar();
    });

    $scope.$on('IdleEnd', function() {
        logger.info('IdleEnd');
    });

    $scope.$on('Keepalive', function() {
        logger.info('Keepalive');
        security.requestToken(APP_CONTEXT.name);
    });

    $state.go('app.main', {}).then(function success() {
        vm.isLoading = false;
    }, function error() {
        vm.isLoading = false;
    }).catch(function(e) {
        vm.isLoading = false;
        logger.error('Could not transition to app.main: ' + e);
    });
}
